package com.zhongwang.mms.module.buy.model;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhongwang.mms.base.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

/**
 * @Description: 采购计划 Model
 * @Author: China.sgl
 * @Date: 2020/4/7 15:46
 */
@SuppressWarnings("ALL")
@Data
@EqualsAndHashCode(callSuper = true)
public class ShoppingPlanModel extends BaseModel {
    /** 提报计划ID */
    @ExcelProperty(value = "提报计划ID",index = 0)
    @NumberFormat("#")
    private Integer rppId;

    /** 提报计划项目编号 */
    @ExcelProperty(value = "提报计划项目编号",index = 1)
    @NumberFormat("#")
    private String rppProjectCode;

    /** 提报计划项目名称 */
    @ExcelProperty(value = "提报计划项目名称",index = 2)
    @NumberFormat("#")
    private String rppProjectName;

    /** 提报计划部分 */
    @ExcelProperty(value = "提报计划部分",index = 3)
    @NumberFormat("#")
    private String rppPart;

    /** 提报计划联系人 */
    @ExcelProperty(value = "提报计划联系人",index = 4)
    @NumberFormat("#")
    private String rppDesigner;

    /** 提报计划物料描述 */
    @ExcelProperty(value = "提报计划物料描述",index = 5)
    @NumberFormat("#")
    private String rppMatDesc;

    /** 提报计划数量 */
    @ExcelProperty(value = "提报计划数量",index = 6)
//    @NumberFormat("#.##")
    private Double rppNum;

    /** 提报计划单位 */
    @ExcelProperty(value = "提报计划单位",index = 7)
    @NumberFormat("#")
    private String rppUnit;

    /** 提报计划标准号 */
    @ExcelProperty(value = "提报计划标准号",index = 8)
    @NumberFormat("#")
    private String rppStandardNo;

    /** 品牌 */
    @ExcelProperty(value = "提报计划品牌",index = 9)
    private String rppBrand;

    /** 备注 */
    @ExcelProperty(value = "提报计划备注",index = 10)
    private String rppRemark;

    /** 创建时间 */
    @ExcelProperty(value = "提报日期",index = 11)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rppCreateTime;

    /** 备注1（物料编码） */
    @ExcelProperty(value = "备注1（物料编码）",index = 12)
    private String rppRemarkSapCode;

    /** 备注2（物料描述） */
    @ExcelProperty(value = "备注2（物料描述）",index = 13)
    private String rppRemarkMatDesc;

    /** sap物料编码 */
    @ExcelProperty(value = "sap物料编码",index = 14)
    @NumberFormat("#")
    private String sppSapCode;

    /** 采购计划物料描述 */
    @ExcelProperty(value = "采购计划物料描述",index = 15)
    @NumberFormat("#")
    private String sppMatDesc;

    /** 数量， 数量提报计划数量之和，如果没有提报计划为0 */
    @NumberFormat("#.##")
    @ExcelProperty(value = "采购数量",index = 16)
    private Double sppNum;

    /** 品牌 */
    @ExcelProperty(value = "品牌",index = 17)
    @NumberFormat("#")
    private String sppBrand;

    /** 交货周期 */
    @ExcelProperty(value = "交货周期",index = 18)
    @NumberFormat("#")
    private Integer sppPayCycle;

    /** 仓库 */
    @ExcelProperty(value = "仓库名称",index = 19)
    @NumberFormat("#")
    private String whiName;

    /** 采购业务员 */
    @ExcelProperty(value = "业务员",index = 20)
    @NumberFormat("#")
    private String sppBuyer;

    /** 项目名称 */
    @ExcelProperty(value = "备注计划用途",index = 21)
    @NumberFormat("#")
    private String sppProjectName;

    /** 备注 */
    @ExcelProperty(value = "备注",index = 22)
    @NumberFormat("#")
    private String sppRemark;

    /** 合报标识 */
    @ExcelProperty(value = "合报标识",index = 23)
    @NumberFormat("#")
    private String sppMergeFlag;

    /** 合报标识 */
    @ExcelProperty(value = "合报ID",index = 24)
    @NumberFormat("#")
    private String sppMergeId;

    /** 主键 */
    @ExcelIgnore
    private Integer sppId;

    /** KC码，回写KC码相当于已审，同时修改状态值 */
    @ExcelIgnore
    private String sppTrackCode;

    /** 采购计划物料编码 */
    @ExcelIgnore
    private String sppMatCode;

    /** 单位 */
    @ExcelIgnore
    @NumberFormat("#")
    private String sppUnit;

    /** 标准号 */
    @ExcelIgnore
    private String sppStandardNo;

    /** 类型 */
    @ExcelIgnore
    private String sppCategory;

    /** 项目编号 */
    @ExcelIgnore
    private String sppProjectCode;

    /** 部位 */
    @ExcelIgnore
    private String sppPart;

    /** 设计者 */
    @ExcelIgnore
    private String sppDesigner;

    /** 联系电话 */
    @ExcelIgnore
    private String sppTel;

    /** 创建时间 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppCreateTime;

    /** 创建人 */
    @ExcelIgnore
    private String sppCreateUser;

    /** 分类名称（从提报计划带过来） */
    @ExcelIgnore
    private String sppTypeName;

    /** 分类ID */
    @ExcelIgnore
    private Integer sppTypeId;

    /** 采购进度 */
    @ExcelIgnore
    private String sppProgress;

    /** 导入状态   1：未导入  2：已导入 作废 */
    @ExcelIgnore
    private Integer sppImportStatus;

    /** 导入记录表ID，用于批量回写KC码 */
    @ExcelIgnore
    private Integer sppImportLogId;

    /** 数据状态 ，是否可用 0=删除 1 = 默认 ，2=已提交未审 3=第一次已审未导入OA 4=导入OA库，5=OA审核通过 6=OA审核不通过
     * 1： 采购计划编辑页面查询，可以提交（变成2 到审阅页面），可以修改（没有记录），可以合报（原记录删除），可以删除（记录删除）
     * 2： 采购计划审阅页面查询，可以审阅（状态变成3），可以驳回（状态变成1）
     * 3： 采购计划导出页面查询（条件查询）， 可以驳回（状态变成1）， 可以导出（导出后状态变成4）
     * 4： 变更页面查询，可以变更， 可以撤消（到状态3）
     * */
    @ExcelIgnore
    private Integer sppStatus;

    /** 备用： 变更状态  1=变更  0=不变更*/
    @ExcelIgnore
    private Integer sppChangeStatus;

    /** 对应变更后采购计划ID（采购计划表） */
    @ExcelIgnore
    private Integer sppSpcId;

    /** 对应变更记录表ID */
    @ExcelIgnore
    private Integer sppRpcId;

    /** 合报标识，提示用 1：合报  0:不合报*/
    @ExcelIgnore
    private Integer sppIntegraFlag;

    /** 对应入库明细表ID */
    @ExcelIgnore
    private Integer sppOdaId;

    /** 单位 */
    @ExcelIgnore
    private String odaUnit;

    /** 回货状态 1已回货 0未回货 */
    @ExcelIgnore
    private Integer sppRetStatus;

    /** 预入库日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppPreDate;

    /** 预入库状态 1是预入库  0否*/
    @ExcelIgnore
    private Integer sppPreStatus;



    /** 对应仓库字典表ID */
    @ExcelIgnore
    private Integer sppWhiId;

    /** 采购计划 计划员 */
    @ExcelIgnore
    private String sppPlanner;

    /** 供应商 */
    @ExcelIgnore
    @NumberFormat("#")
    private String sppSupplier;

    /** 外键：依赖原材料物料基础表，回货确认回写ID */
    @ExcelIgnore
    private Integer sppSteelCode;

    /** 审批日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppVerifyDate;

    /** 预计回货日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppPredictDate;

    /** 招标开始日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppTenderStartDate;

    /** 招标结束日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppTenderEndDate;

    /** 报价开始日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppQuoteStartDate;

    /** 报价结束日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppQuoteEndDate;

    /** 签合同开始日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppContractStartDate;

    /** 签合同结束日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppContractEndDate;

    /** 计划采购日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date sppPlanDate;

    /** 行号 */
    @ExcelIgnore
    private String sppRowNo;

    /** 物料编码 */
    @ExcelIgnore
    private String rppMatCode;

    /** 实用数量 */
    @ExcelIgnore
    private Double rppRealNum;

    /** 余量 */
    @ExcelIgnore
    private Double rppOverNum;



    /** 提报计划员（物控员） */
    @ExcelIgnore
    private String rppPlanner;

    /** 外协图号 */
    @ExcelIgnore
    private String rppDiagram;

    /** 创建人 */
    @ExcelIgnore
    private String rppCreateUser;

    /** 原始提报计划标识 1=原始计划  2=拆分计划  3=已拆分的原始计划 */
    @ExcelIgnore
    private Integer rppOriginalFlag;

    /** 对应采购计划Id */
    @ExcelIgnore
    private Integer rppSppId;

    /** 数据状态 1=不可用 2=正常 3=提交 */
    @ExcelIgnore
    private Integer rppStatus;

    /** 拆分后，源计划Id */
    @ExcelIgnore
    private Integer rppSrcId;

    /** 是否不可撤消拆分  1=是 2=否 */
    @ExcelIgnore
    private Integer rppAllowCancel;

    /** 是否使用库存 1=使用库存 2=正常提报 3=暂不提报 */
    @ExcelIgnore
    private Integer rppUseStock;
    /** 是否使用库存 1=使用库存 2=正常提报 3=暂不提报 */
    @ExcelIgnore
    private String rppUseStockStr;
    /** 分类Id */
    @ExcelIgnore
    private Integer rppTypeId;

    /** 分类 1=机械 2=电气 3=液压 4=特殊铝材 5=锻件毛坯 6=整体外协 7=待料外协 8=铸件毛坯 9=原材料 10=备件 */
    @ExcelIgnore
    private String rppTypes;

    /** 库存Id， 备用（暂时用不上） */
    @ExcelIgnore
    private Integer rppStockId;

    /** 提报标识 1=暂不提报 2=正常提报  作废 */
    @ExcelIgnore
    private Integer rppSubFlag;

    /** 计划号 */
    @ExcelIgnore
    private String rppPlanNo;

    /** 库存类型 h:成品库,p:外购件库,m:原料库 */
    @ExcelIgnore
    private String rppItyType;

    /** 变更原因 */
    @ExcelIgnore
    private String rppChange;

    /** 是否选择库存标志 0=否 1=是 */
    @ExcelIgnore
    private Integer rppIsFlag;

    /** 是否补计划 0=否 1=是  */
    @ExcelIgnore
    private Integer rppAppend;

    /** 原料入库ID */
    @ExcelIgnore
    private Integer rppOdaId;

    /** 指定物料描述 */
    @ExcelIgnore
    private String rppAssignDesc;

    /** 生产编号 */
    @ExcelIgnore
    private String rppProduceCode;

    /** 原料回货状态 1=已回货 */
    @ExcelIgnore
    private Integer rppRetStatus;

    /** 变更标记 1=发生变更采购计划未变更 */
    @ExcelIgnore
    private Integer rppChangeMark;

    /** 生产令编号 */
    @ExcelIgnore
    private String sppProdNo;
    /** 生产令编号 */
    @ExcelIgnore
    private String rppProdNo;

    /** 变更原因 */
    @ExcelIgnore
    private String spcReason;

    /** 是否删除 */
    @ExcelIgnore
    private String spcDel;

    /** 项目状态 */
    @ExcelIgnore
    private Integer proProductionStatus;

    /** 外购件入库主键 */
    @ExcelIgnore
    private Integer odaId;

    /** "外键：冲单替换的出入库单 数据 */
    @ExcelIgnore
    private Integer odaRushId;

    /** 外键依赖出入库单表 */
    @ExcelIgnore
    private Integer odaOdrId;

    /** 1是入库,2是出库（领料） */
    @ExcelIgnore
    private Integer odaType;

    /** 项目号 */
    @ExcelIgnore
    private String odaProCode;


    /** 项目名 */
    @ExcelIgnore
    private String odaProName;

    /** 物料编码：本系统编码 */
    @ExcelIgnore
    private String odaMatCode;

    /** 物料描述 */
    @ExcelIgnore
    private String odaMatDesc;

    /** 外协物料描述 */
    @ExcelIgnore
    private String odaMatName;

    /** 外协图号 */
    @ExcelIgnore
    private String odaDrawingCode;

    /** 数量 */
    @ExcelIgnore
    private Double odaNum;

    /** 数量单价 */
    @ExcelIgnore
    private Double odaNumPrice;

    /** 仓库内区位 */
    @ExcelIgnore
    private String odaPosition;

    /** 仓库外键 */
    @ExcelIgnore
    private Integer odaWhiId;

    /** 数量单位 */
    @ExcelIgnore
    private String odaNumUnit;

    /** 总金额 */
    @ExcelIgnore
    private Double odaTotalPrice;

    /** 品牌 */
    @ExcelIgnore
    private String odaBrand;

    /** 备注 */
    @ExcelIgnore
    private String odaRemark;

    /** 记账日期 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private java.util.Date odaBookkeepingDate;

    /** 特殊说明 */
    @ExcelIgnore
    private String odaSpec;

    /** 回货日期 */
    @ExcelIgnore
    private String odaBackDate;

    /** SAP物料编码 */
    @ExcelIgnore
    private String odaSapCode;

    /** 跟踪号 */
    @ExcelIgnore
    private String odaTrackCode;

    /** 红冲标识：0：蓝字 1：被红冲 */
    @ExcelIgnore
    private Integer odaRedFlag;

    /** 红冲时间 */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private java.util.Date odaRedDate;

    /** 红冲人员 */
    @ExcelIgnore
    private Integer odaRedUserId;

    /** 重量单价 */
    @ExcelIgnore
    private Double odaWeightPrice;

    /** 领用类型 */
    @ExcelIgnore
    private String odaTakeType;

    /** 外键：调拨时记录出库仓 */
    @ExcelIgnore
    private Integer odaOutWhiId;

    /** 外键：调拨时记录入库仓 */
    @ExcelIgnore
    private Integer odaInWhiId;

    /** 用来记录来自哪个库存数据，外键：依赖库存表ID */
    @ExcelIgnore
    private Integer odaOutItyId;


    /** 入库类型  1：库存在库 2：项目 */
    @ExcelIgnore
    private Integer odaInType;

    /** 接收重量 */
    @ExcelIgnore
    private Double odaWeight;

    /** 原料外键 */
    @ExcelIgnore
    private Integer odaMatId;

    /** 回货重量(备注作用，不参与后期 */
    @ExcelIgnore
    private String odaBackWeight;

    /** 单价 */
    @ExcelIgnore
    private Double odaPrice;

    /** 原料库存表外键(出库时使用) */
    @ExcelIgnore
    private Integer odaItyId;

    /** 单据明细类型：1：蓝单 2：红单 */
    @ExcelIgnore
    private Integer odaItyFlag;

    /** 红冲人员 */
    @ExcelIgnore
    private String odaRedUser;

    /** 串料申请明细外键 */
    @ExcelIgnore
    private Integer odaCadId;

    /** 金额 */
    @ExcelIgnore
    private Double odaAmount;

    /** 物料sap系统编码 */
    @ExcelIgnore
    private String odaMatSapCode;
    /** 原料物料主键 */
    @ExcelIgnore
    private Integer matId;

    /** 原料编码 */
    @ExcelIgnore
    private String matCode;

    /** 米重/厚度 */
    @ExcelIgnore
    private Double matHeight;

    /** 长度 */
    @ExcelIgnore
    private Double matLength;

    /** 宽度 */
    @ExcelIgnore
    private Double matWidth;

    /** 状态：0：删除 1：正常 */
    @ExcelIgnore
    private Integer matStatus;

    /** 数量单位 */
    @ExcelIgnore
    private String matNumUnit;

    /** 重量单位 */
    @ExcelIgnore
    private String matWeightUnit;

    /** 原料分类 板材 型材 */
    @ExcelIgnore
    private String materialKind;

    /** 重量计算公式 */
    @ExcelIgnore
    private Integer matFormulaType;

    /** 材质外键 */
    @ExcelIgnore
    private Integer matQualityId;

    /** 规格外键 */
    @ExcelIgnore
    private Integer matSpecId;

    /** 类型外键 */
    @ExcelIgnore
    private Integer matTypeId;

    /** 库位外键 */
    @ExcelIgnore
    private Integer matStockId;

    /** 物料描述（类型_材质_规格  宽* */
    @ExcelIgnore
    private String matNameDesc;

    /** 材质名称 */
    @ExcelIgnore
    private String qualityName;

    /** 类型名称 */
    @ExcelIgnore
    private String typeName;

    /** 规格名称 */
    @ExcelIgnore
    private String specName;

    /** 原始提报计划名称 */
    @ExcelIgnore
    private String matDesc;

    /** 采购计划提交状态 */
    @ExcelIgnore
    private Integer sppSubmitStatus;

    /** 导出批次号 */
    @ExcelIgnore
    private String spiTrackCode;

    /** 采购计划综合查询页面 项目状态多条件查询使用*/
    @ExcelIgnore
    private String proProductionStatusListText;

    /** 采购计划综合查询页面 采购进度多条件查询使用*/
    @ExcelIgnore
    private String sppStatusListText;

    /** 指定采购计划，采购计划对应的提报计划数量 */
    @NumberFormat("#.##")
    @ExcelIgnore
    private Double num;

    @ExcelIgnore
    /** 采购计划综合查询页面，使用库存的SAP物料编码 */
    private String itySapCode;

    /** 计划采购日期超过数值 */
    @ExcelIgnore
    private Integer dateDiff;

    /** 校验状态 */
    @ExcelIgnore
    private Integer sppReviewFlag;

    /** 页面多条件检索使用：提报计划项目号 */
    @ExcelIgnore
    private String rppProjectCodeArrayStr;

    /** mybatis循环载体：提报计划项目号集合 */
    @ExcelIgnore
    private List<String> rppProjectCodeArray;

    /** 页面多条件检索使用：采购计划项目号 */
    @ExcelIgnore
    private String sppProjectCodeArrayStr;

    /** mybatis循环载体：采购计划项目号集合 */
    @ExcelIgnore
    private List<String> sppProjectCodeArray;

    /** 错误信息 */
    @ExcelIgnore
    private String sppErrorInfo;

    /** 导入时使用，行号 */
    @ExcelIgnore
    private Integer rowIndex;
    /** 物控员备注列 */
    @ExcelIgnore
    private String sppPlannerRemark;
    /** 合报后的提报计划总数量 */
    @ExcelIgnore
    private String rnum;

}
